/**
 * 公用的权限校验方法
 */

import ACCESS_ENUM from "@/access/accessEnum";

/**
 * 检查权限
 * @param loginUser 当前登录用户
 * @param needAccess 需要的权限
 * @return boolean 有无权限
 */
const checkAccess = (loginUser: any, needAccess = ACCESS_ENUM.NOT_LOGIN) => {
  // 获取当前登录用户具有的权限, 没有loginUser 表示未登录
  const loginUserAccess = loginUser?.userRole ?? ACCESS_ENUM.NOT_LOGIN;
  // 不需要任何权限即可访问
  if (!needAccess || needAccess === ACCESS_ENUM.NOT_LOGIN) {
    return true;
  }
  if (needAccess === ACCESS_ENUM.LOGIN) {
    if (
      loginUserAccess !== ACCESS_ENUM.NOT_LOGIN &&
      loginUserAccess !== ACCESS_ENUM.LOGIN
    ) {
      return true;
    }
  }
  // 学生可以访问
  if (needAccess === ACCESS_ENUM.STUDENT) {
    if (
      loginUserAccess !== ACCESS_ENUM.NOT_LOGIN &&
      loginUserAccess === ACCESS_ENUM.STUDENT
    ) {
      return true;
    }
  }
  // 只有老师才能访问
  if (needAccess === ACCESS_ENUM.TEACHER) {
    if (
      loginUserAccess !== ACCESS_ENUM.NOT_LOGIN &&
      loginUserAccess === ACCESS_ENUM.TEACHER
    ) {
      return true;
    }
  }
  // 只有管理员才能访问
  if (needAccess === ACCESS_ENUM.ADMIN) {
    if (
      loginUserAccess !== ACCESS_ENUM.NOT_LOGIN &&
      loginUserAccess === ACCESS_ENUM.ADMIN
    ) {
      return true;
    }
  }
  return false;
};

export default checkAccess;
